import { useSign } from '@/apis/user'
import wx from 'weixin-js-sdk'
import { useUserStore } from '@/store/user'
import { useConfigStore } from '@/store/config'
import { useTtsaStore } from '@/store/ttsa'
import { useTreeStore } from '@/store/tree'
import { isWechat, isIos } from '@/utils/client'
import { MODE, NODE_TYPE } from '@/constants/ttsa'

export default function useWxShare() {
  const { XMOV_APP_WX_APPID } = import.meta.env
  /**
   * 微信分享内容
   */
  const wxShare = async (values: LooseObject) => {
    try {
      const { just_in_wechat } = useConfigStore()
      if (!(isWechat() || just_in_wechat)) return
      let url = '';
      if (isIos()) {
        url = localStorage.getItem('firstUrl')
      } else {
        url = window?.location.href;
      }
      console.log('wx: ' + window?.location.href);
      const user = useUserStore()
      let response
      if (user.wx_config) response = user.wx_config
      else {
        response = await useSign({
          url: url
        })
      }
      if (!response?.signature) return
      if (!user.wx_ready) {
        wx.config({
          debug: false, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来，若要查看传入的参数，可以在 pc 端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。
          appId: XMOV_APP_WX_APPID, // 必填，公众号的唯一标识
          timestamp: response?.timestamp, // 必填，生成签名的时间戳
          nonceStr: response?.nonceStr, // 必填，生成签名的随机串
          signature: response?.signature, // 必填，签名
          jsApiList: ['updateAppMessageShareData',
            'updateTimelineShareData', 'startRecord', 'stopRecord', 'playVoice', 'stopVoice'], // 必填，需要使用的 JS 接口列表
        })
      }
      wx.ready(function () {
        user.wx_ready = true
        // 自定义“分享给朋友”及“分享到QQ”按钮的分享内容（1.4.0）
        wx.updateAppMessageShareData({
          title: values?.title, // 分享标题
          desc: values?.desc, // 分享描述
          link: values?.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
          imgUrl: values.imgUrl, // 分享图标
          success: function () {
            // 设置成功
            console.log('“分享给朋友”及“分享到QQ”成功')
          },
        })
        // 自定义“分享到朋友圈”及“分享到 QQ 空间”按钮的分享内容（1.4.0
        wx.updateTimelineShareData({
          title: values?.title, // 分享标题
          link: values?.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
          imgUrl: values?.imgUrl, // 分享图标
          success: function () {
            // 设置成功
            console.log('分享到朋友圈”及“分享到 QQ 空间”成功')
          },
        })
      })
      wx.error(function (res) {
        console.log(res)
      })
    } catch (error) { }
  }
  /**
   * 分享
   */
  const handShare = () => {
    const { share_info, just_in_wechat } = useConfigStore()

    if (!(isWechat() || just_in_wechat)) return

    const businessData = useUserStore()
    const { origin, pathname } = window?.location
    let link = `${origin}${pathname}?app_id=${businessData.appId}`
    const ttsa = useTtsaStore()
    const content_id = useTreeStore().content_id
    const node_type = useTreeStore().node_type
    if (content_id && ttsa.mode !== MODE.QA && [NODE_TYPE['main'], NODE_TYPE['smart_main']].includes(node_type)) link += `&content_id=${content_id}`
    else link += '&enter_without_node=true'
    wxShare({
      title: share_info?.title,
      desc: share_info?.description,
      link,
      imgUrl: share_info?.thumb_image,
    })
  }

  return {
    wxShare,
    handShare
  }
}